module.exports = {
  apps: [
    {
      // 应用配置
      name: 'livechat-server',
      script: 'dist/index.js',
      instances: 'max', // 根据CPU核心数自动配置
      exec_mode: 'cluster',

      // Windows特定配置
      interpreter: 'node',
      cwd: './server',

      // 环境变量
      env: {
        NODE_ENV: 'development',
        PORT: 3000,
      },
      env_production: {
        NODE_ENV: 'production',
        PORT: 3000,
      },

      // 性能配置
      node_args: '--max-old-space-size=2048',
      max_memory_restart: '1G',

      // 日志配置
      log_date_format: 'YYYY-MM-DD HH:mm:ss',
      error_file: 'D:\\livechat\\logs\\pm2\\error.log',
      out_file: 'D:\\livechat\\logs\\pm2\\out.log',
      merge_logs: true,

      // 监控配置
      watch: false,
      ignore_watch: ['node_modules', 'logs', 'uploads', 'temp'],

      // 重启配置
      min_uptime: '60s',
      max_restarts: 10,
      restart_delay: 4000,

      // Windows服务配置
      windowsHide: true,
      kill_timeout: 5000,

      // 健康检查
      exp_backoff_restart_delay: 100,
      max_memory_restart: '1G',

      // 优雅关闭
      shutdown_with_message: true,
      wait_ready: true,
      listen_timeout: 8000,

      // 自动重启配置
      autorestart: true,
      cron_restart: '0 4 * * *', // 每天凌晨4点重启

      // 错误处理
      max_memory_restart: '1G',
      stop_exit_codes: [0],
      exp_backoff_restart_delay: 100,
    },
  ],

  // 部署配置
  deploy: {
    production: {
      user: 'administrator',
      host: 'localhost',
      ref: 'origin/master',
      repo: 'your-repository-url',
      path: 'D:\\livechat\\production',
      'post-deploy':
        'npm install && npm run build && pm2 reload ecosystem.config.js --env production',
    },
  },
}
